"""
模式: [start:end:step]
start: 开始的位置, 包含, 默认 0
end: 结束的位置, 不包含, 默认值是 列表的长度
step: 步长, 默认 1
"""

a = [1, 3, 5, 7, 9, 11, 13, 15]
assert a == a[::]  # [::] 返回一个新的 list
print(f"a[::] = {a[::]} # 返回一个新的复制 ")
print(f"a[::-1] = {a[::-1]} # 返回一个逆序 ")
print(f"a[::2] = {a[::2]} # 获取 0, 2, 4... ")
print(f"a[1::2] = {a[1::2]} # 获取 1, 3, 5... ")
print(f"a[3:6] = {a[3:6]} # 一般用法")
print(f"a[1:100] = {a[1:100]} # end 大于列表长度时, 尾部截断 ")
print(f"a[100:] = {a[100:]} # start 大于列表长度时, 返回空列表 ")

a[len(a):] = [9]  # 尾部增加元素
a[:0] = [1, 2]  # 头部插入元素
a[3:3] = [4, 44]  # 指定位置插入元素
a[:3] = [111, 1111]  # 替换列表, 头部替换, 两边长度应相等
a[3:] = [4, 5, 6]  # 替换列表, 尾部替换, 长度可不相等
a[::2] = [0] * 3  # 0, 2, 4 位置替换为 0, 两边长度必须一致
a[1::2] = ['a', 'b', 'c']  # 1, 3, 5 替换
a[:3] = []  # 删除前三个元素
a = [1, 3, 5, 7, 9, 11, 13, 15]
del a[:3]  # 删除前三个
del a[::2]  # 删除 0, 2, 4...
print(a)
